package cn.tarena.ht.service;

import java.util.List;

import cn.tarena.ht.pojo.User;
import cn.tarena.ht.pojo.UserInfo;

public interface UserService {
	
	/**定义一个查询所有用户信息的方法，注意此方法为4表关联查询（效率问题，勿滥用）
	 */
	public List<User> findAll();
	
	/**定义一个根据用户ID，修改用户状态的方法
	 * @param userIds 用户ID数组
	 * @param state 用户状态
	 */
	public void updateState(String[] userIds, int state);
	
	/**定义一个根据用户ID，删除用户的方法
	 * @param userIds 用户ID
	 */
	public void deleteById(String[] userIds);
	
	/**定义一个添加用户的方法
	 * @param user 用户对象，用户封装新增用户的信息并传递
	 */
	public void saveUser(User user);

	/**定义一个根据用户ID，查询用户信息的方法
	 * @param userId 用户ID
	 * @return 查询到的用户信息
	 */
	public User findUserById(String userId);
	
	/**定义一个修改用户信息的方法
	 * @param user 用户信息
	 */
	public void updateUser(User user);

	/**定义一个根据用户ID修改用户角色的方法
	 * @param userId 用户ID
	 * @param roleIds 用户角色ID数组
	 */
	public void saveUserRole(String userId, String[] roleIds);

	/**定义一个根据用户Id查询用户角色的方法
	 * @param userId 用户Id
	 * @return 返回查询到得用户角色
	 */
	public List<String> findUserRoleIdList(String userId);

	/**定义一个根据用户名称和用户密码，查询用户信息的方法
	 * @param userName 用户名称
	 * @param password 用户密码
	 * @return 返回查询到的用户信息
	 */
	public User findUserByUP(String userName, String password);

	/**定义一个通过用户名查询用户信息的方法
	 * @return 返回查询到得用户信息
	 */
	public User findUserByUsername(String username);

	/**定义一个通过用户Id查询用户权限信息的方法
	 * @param userId 用户ID
	 * @return 返回查询到的用户信息集合
	 */
	public List<String> findPrivilegeList(String userId);

}
